package com.zpark.express.util;

import java.util.Objects;

public class TypeUtil {

    public static Integer caseToInt(Object value,Integer defaults){
       Integer casetToInt=caseToInt(value);
       return Objects.isNull(casetToInt)? defaults:casetToInt;
    }

    public static Integer caseToInt(Object value) {
        if(value==null){
            return null;
        }

        if(value instanceof Integer){
            return (Integer)value;
        }

        if(value instanceof  Number){
            return ((Number) value).intValue();
        }

        if(value instanceof  String){
            //object类型转String
            String strVal=(String)value;
            //判断是否为空
            if(strVal.length()==0
                    || "null".equals(strVal)
                    || "NULL".equals(strVal)
             ){
                return null;
            }

            //第一个位置的字符串不是逗号,
            if(strVal.indexOf(',')!=0){
                //使用空格替换有逗号的地方
                strVal.replaceAll(",","");
            }
            //将字符串转为int
            return Integer.parseInt(strVal);
        }

        if(value instanceof Boolean){
            return (Boolean)value?1:0;
        }

        //上面的类型都不匹配就抛出异常
        throw new RuntimeException("cast not to int");
    }
}
